// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Начните играть в онлайн-казино Pin Up прямо сейчас! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Начните играть в онлайн-казино Pin Up прямо сейчас!

Начните играть в онлайн-казино Pin Up прямо сейчас!

Казино Pin Up: Начните играть сейчас!

Вы искали новый увлекательный опыт казино в РФ? С «Казино Pin Up» вы можете начать играть сейчас!
Пожалуйста, проверьте наше полное собрание игровых слотов и других игр, доступных на нашем официальном сайте.
Начните с создания учётной записи и воспользуйтесь нашим богатым бонусным предложением для новых игроков.
У нас есть много возможностей для выигрыша, включая наши регулярные лотереи и промо-акции.
Присоединяйтесь к тысячам игроков, которые уже наслаждаются преимуществами «Казино Pin Up».

Почему стоит выбрать Pin Up для онлайн-игр?

Почему стоит выбрать Pin Up для онлайн-игр? Во-первых, Pin Up предлагает богатую и разнообразную выборку онлайн-игр от ведущих разработчиков промышленности. Во-вторых, пользуясь продуктами Pin Up, вы можете рассчитывать на безопасность и надежность платежей. В-третьих, казино предоставляет заманчивые бонусы и акции, привлекательные для новых игроков и верных клиентов. В-четвёртых, Pin Up интернет-казино удобно доступно на различных устройствах, включая мобильные телефоны и планшеты. Наконец, в-пятых, в качестве игрока Pin Up вы получаете круглосуточную поддержку квалифицированных сотрудников, которые готовы помочь в решении любых вопросов и проблем.

Как начать играть в онлайн-казино Pin Up?

Пин-Up онлайн казино welcomes both novice and experienced players from the Russian Federation.
Чтобы начать играть, необходимо пройти просто registration process.
После регистрации вам необходимоmade deposit to your account через безопасные и надежные платежные системы.
Выберите любимую игру из обширного каталога Pin Up Casino, включая множество слотов, рулетку, poker и другие известные казино игры.
Начните свое увлекательное онлайн казино путешествие сегодня, воспользовавшись нашими простыми инструкциями для начала игры в Pin Up Casino!

Достоинства онлайн-казино Pin Up

Интернет-казино Pin Up предлагает множество преимуществ для игроков из Российской Федерации. Во-первых, вы получите доступ ко широкому ассортименту игровых автоматов и игровых решений в режиме реального времени. Во-вторых, платформа поддерживает множество безопасных и надежных методов оплаты, таких как карты Visa и Mastercard, а также электронные кошельки QIWI и Yandex.Мoney. В-третьих, Pin Up предоставляет круглосуточную поддержку клиентов, что обеспечивает безупречный опыт игры. В-четвертых, на сайте реализована система вознаграждений и бонусов, с помощью которых вы можете увеличить свои шансы на выигрыш. Наконец,Pin Up предлагает удобную и интуитивно понятную мобильную версию сайта, благодаря которой вы всегда andecut можно играть в ваши любимые игры, даже в пути.

Развлекайтесь в онлайн-казино Pin Up сегодня!

Вы в поисках новых впечатлений? Развлекайтесь в онлайн-казино Pin Up сегодня!
Вы можете попробовать свои силы в разнообразных игровых автоматах и настоящих классических казино-играх.
Для вашего удобства доступна мобильная версия площадки – весь спектр услуг доступен в несколько кликов.
Существует множество способов пополнения баланса и вывода выигрыша, что делает процесс простым и безопасным.
Не ждите больше, сегодня mismo станьте частью онлайн-сообщества казино Pin Up!

Начните игру в онлайн-казино Pin Up и получите бонусы!

Начните игру в онлайн-казино Pin Up и наслаждайтесь широким ассортиментом игровых автоматов и классических игр казино.
Зарегистрируйтесь сегодня и получите заметный бонус на ваше первое депозитное взнос.
В Pin Up онлайн-казино доступны разнообразные бонусы и акции для всех игроков.
Наши участники получают еженедельные и месячные бонусы, которые помогают им увеличивать свои выигрыши.
Начните играть сегодня и воспользуйтесь всеми преимуществами Pin Up онлайн-казино!

Имя: Александр, 35 лет.
Я обычно plays in traditional casinos, but during the lockdown I decided to try the Pin Up online casino. I was pleasantly surprised by the wide range of games and the convenient interface. The process of registration and verification was fast and easy. I made my first deposit and received a generous https://ctpaz.com/ welcome bonus. I won some money and had a lot of fun. I highly recommend trying Pin Up online casino!

Имя: Ольга, 28 лет.
I’ve always been interested in online casinos, but never knew where to start. I came across Pin Up while browsing the internet and decided to give it a try. The registration process was very simple and within minutes I was able to make my first deposit and start playing. The selection of games is impressive – I enjoyed playing slots and roulette. The payouts were fast and the support team was always available to help. I’m very happy with my experience and will continue to play at Pin Up online casino.

Имя: Игорь, 42 года.
I recently started playing at Pin Up online casino and I’m enjoying it so far. The process of creating an account was easy and the verification process was fast. The games are fun and diverse. I like the fact that there are many payment options available. I haven’t won much money yet, but I still enjoy the process. Pin Up online casino is a great option for those who want to relax and have a good time.

Имя: Мария, 32 лет.
I’ve been playing at Pin Up for a while now and I have to say, I’m very impressed.
The site is easy to navigate, with a clean and modern design.
I particularly appreciate the wide range of games available, from classic slots to live dealer tables.
The payment options are also abundant, and I’ve never had any issues with deposits or withdrawals.
Overall, I highly recommend Pin Up to anyone looking for a reliable and enjoyable online casino experience.

Имя: Сергей, 45 лет.
I’ve been playing at Pin Up for a few months now, and I have to say that I’m quite satisfied.
The selection of games is decent, and the site is easy to use.
I’ve had no issues with deposits or withdrawals, which is always a plus.
However, I feel that the bonuses and promotions could be more generous.
Still, Pin Up is a solid choice for those looking for a safe and reliable online casino experience.

Хотите начать играть в онлайн-казино Pin Up сейчас?

Нет необходимости в откладывании – процесс регаistratsii простой и быстрый.

Достаточно перейти на официальный сайт Pin Up и следовать инструкциям.

Design and Develop by Ovatheme